// pages/discovery/discovery.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    notifications: [],
    socketTask: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.connectWebSocket();
    this.fetchAnnouncements();
  },

  // 建立WebSocket连接
  connectWebSocket() {
    const socketTask = wx.connectSocket({
      url: 'ws://localhost:8080/ws/announcement',
      success: () => {
        console.log('WebSocket连接成功');
      },
      fail: (error) => {
        console.error('WebSocket连接失败:', error);
        wx.showToast({
          title: '连接失败',
          icon: 'none'
        });
      }
    });

    socketTask.onOpen(() => {
      console.log('WebSocket连接已打开');
    });

    socketTask.onError((error) => {
      console.error('WebSocket错误:', error);
    });

    socketTask.onClose(() => {
      console.log('WebSocket连接已关闭');
    });

    this.setData({ socketTask });
  },

  fetchAnnouncements() {
    wx.request({
      url: 'http://localhost:8080/wx/announcement',
      method: 'GET',
      header: {
        'content-type': 'application/json',
        'Authorization':wx.getStorageSync('token')
      },
      success: (res) => {
        if (res.data && res.data.code === 200) {
          this.setData({
            notifications: res.data.data.map(item => ({
              ...item,
              isRead: false
            }))
          });
        } else {
          wx.showToast({
            title: '获取公告失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // 页面卸载时关闭WebSocket连接
    if (this.data.socketTask) {
      this.data.socketTask.close();
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 标记通知为已读
   */
  markAsRead(e) {
    const index = e.currentTarget.dataset.index;
    const notification = this.data.notifications[index];
    
    // 发送WebSocket消息
    if (this.data.socketTask) {
      const message = {
        action: "read",
        announcementId: notification.id || notification.announcementId // 尝试两种可能的ID字段名
      };
      
      console.log('发送WebSocket消息:', message); // 添加日志
      
      this.data.socketTask.send({
        data: JSON.stringify(message),
        success: () => {
          // 更新本地状态
          const key = `notifications[${index}].isRead`;
          this.setData({
            [key]: true
          });
          
          wx.showToast({
            title: '已标记为已读',
            icon: 'success'
          });
        },
        fail: (error) => {
          console.error('发送已读消息失败:', error);
          wx.showToast({
            title: '标记已读失败',
            icon: 'none'
          });
        }
      });
    } else {
      wx.showToast({
        title: '连接已断开',
        icon: 'none'
      });
    }
  }
})